在 Spring Boot 應用程式中使用 docker-compose 將應用程式容器化是一個很方便的方式,尤其是當你需要和其他服務一起運行,例如資料庫。以下是一個基本的 docker-compose.yml 範例,搭配一個 Spring Boot 應用和一個 MySQL 資料庫。
步驟一:準備 Dockerfile
首先,你需要在 Spring Boot 專案中準備一個 Dockerfile,例如:
FROM openjdk:17-jdk-slim
WORKDIR /app
COPY target/your-app.jar /app/your-app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/app/your-app.jar"]
步驟二:撰寫 docker-compose.yml
然後,你可以撰寫一個 docker-compose.yml 文件來定義 Spring Boot 應用和 MySQL 的服務。
version: '3'
services:
app:
image: your-app-image-name
build:
context: .
dockerfile: Dockerfile
container_name: spring-boot-app
ports:
- "8080:8080"
environment:
SPRING_DATASOURCE_URL: jdbc:mysql://db:3306/your_db
SPRING_DATASOURCE_USERNAME: user
SPRING_DATASOURCE_PASSWORD: password
depends_on:
- db
db:
image: mysql:8.0
container_name: mysql-db
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: your_db
MYSQL_USER: user
MYSQL_PASSWORD: password
ports:
- "3306:3306"
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
這個 docker-compose.yml 文件包含:
app 服務: 這是你的 Spring Boot 應用程式。它會透過 Dockerfile 建立映像,並且將本地端的 8080 端口映射到容器中的 8080 端口。
db 服務: 使用 MySQL 資料庫映像,並且將設定一些環境變數來設定資料庫名稱、使用者和密碼。它將資料庫的 3306 端口映射到本地端。
depends_on: 確保應用在 MySQL 資料庫啟動後才會開始。
步驟三:啟動 Docker Compose
在專案根目錄中運行以下命令來啟動服務:
docker-compose up --build